The approaches described in this section could be pursued but are not necessarily approaches that have previously been conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Physical laws in the real world are taken for granted. The behavior and properties of physical objects are well-studied and well-understood subjects in science and engineering. In virtual reality, this is entirely different—simulated worlds offer no built-in mechanisms for simulating the physical laws that govern our daily life. Almost exclusively focused on visual effects and simple environment interaction like in computer games, special care has to be taken to augment virtual environments with realistic classical mechanics. At the same time, it is crucial not to impair interactive experience of a user by requiring long computation times (e.g., less than twenty five frames per second) for operating a simulation. The biggest challenge in the field of mechanically plausible virtual reality applications is to achieve the best possible compromise between the level of detail of the simulated environment and the runtime requirements of the simulation itself.
The degrees of complexity of control programs are wide—it comprises deterministic sequences of trajectories as found for example in arc welding and plug-and-play applications where no dynamic modifications to trajectories are necessary. Assembly and handling tasks are examples of robotic applications that may need to compensate variations in work piece positions (including search strategies to detect target points). Such tasks require live information from the working environment in order to dynamically react to changing states and conditions. Partially or fully automated robotic applications are even more complex, as they require the online execution and coordination of numerous tasks (e.g., localization and mapping, object recognition, and handling) to enable robots to achieve their tasks. The idea to use simulation software for both designing and verifying control programs and algorithms in both industrial and service robotics has been known, as can be seen by a wide variety of software applications currently available (e.g., Gazebo, Webots, KUKA SimPro, and Siemens RobotExpert). However, these simulation frameworks are currently not suitable for testing processes for interaction with real environment in a high degree of mechanical interaction between tools and work pieces. Additionally, these simulation networks are highly dependent on real-time sensor data from the working environment. The simulation frameworks are often restricted in their ability to check highly detailed geometric models of robots, tools, work pieces, and other objects for contacts or overlaps in or close to real-time.
A robot is only as reliable as the software that controls it. To provide developers and users with a continuous development process, applying virtual reality technology to developing and testing smart robotics applications, before the real hardware is available, is highly advisable. Such an approach lowers the risk of downtimes and defects caused by control software errors and helps to make robots more reliable in collaboration with humans.
Comparable software solutions include:                Finite element method (FEM) applications that use both highly detailed geometric and computational models to provide realistic models for the physical (e.g., mechanical, thermodynamic) behavior of simulated objects. However, these applications have very high runtime requirements that lead to a huge offset between simulation and real-time, thus making them inadequate for interactive applications.        Physics engines as commonly used in computer games and state-of-the-art robotic simulation frameworks. These engines are specifically designed to meet real-time constraints but this advantage is offset by the fact that it is necessary to use extremely simplified geometric models of simulated objects to keep the required computation times low. In addition, these engines only offer very basic computational models for classical mechanics, ignoring all but the most basic properties of mechanical objects. This fact severely limits the usefulness of these engines for challenging simulation applications in industrial and service robotics.        Multi-body systems focus on simulating the dynamic behavior of mechanical assemblies, with similar focus on realistic models as in the case of FEM systems. Accordingly, the runtime requirements of such simulation systems are not suitable for real-time operation.        Test frameworks—in software development, software tests are common. To validate software programs for bugs and semantic arrays in the code, unit tests have to be created to run, for example, after every commit. Control programs for complex robotic tasks are largely composed of instructions that cannot be tested using conventional software tools. To test robot programs for functionality in the real world, a usual software test is not sufficient. A whole function/task unit test is needed to validate whether the movements and actions (that are controlled by a program) based on physical events are successful.        
Currently, robots can be programmed using a method where a human can bring a robot into the right position by a teaching pendant. Moreover, program solutions for programming the robots can include off-line programming to create a program independent of an actual robot cell. The robot program may be uploaded to a real industrial robot for execution. The robot cell may be represented via a graphical three-dimensional model in a simulator. The off-line programming and simulator tools may be used to create optimized program paths for the robot to perform a specific task. The simulation of the robot program may be based on robot movements, reachability analysis, collision and near-miss detection, cycle time reporting, and other factors.